package 简单.模拟;

/**
 * 字符串 s 可以按下述步骤划分为若干长度为 k 的组：
 * 第一组由字符串中的前 k 个字符组成，第二组由接下来的 k 个字符串组成，依此类推。每个字符都能够成为 某一个 组的一部分。
 * 对于最后一组，如果字符串剩下的字符 不足 k 个，需使用字符 fill 来补全这一组字符。
 * 注意，在去除最后一个组的填充字符 fill（如果存在的话）并按顺序连接所有的组后，所得到的字符串应该是 s 。
 * 给你一个字符串 s ，以及每组的长度 k 和一个用于填充的字符 fill ，按上述步骤处理之后，返回一个字符串数组，该数组表示 s 分组后 每个组的组成情况 。
 *
 * @ https://leetcode.cn/problems/divide-a-string-into-groups-of-size-k/description/?envType=daily-question&envId=2025-06-22
 * @date 2025/06/22
 */
public class 将字符串拆分为若干长度为k的组_2138 {

    public static void main(String[] args) {

        将字符串拆分为若干长度为k的组_2138 impl = new 将字符串拆分为若干长度为k的组_2138();

        System.out.println(impl.divideString("abcdefghij", 3, 'x'));

    }

    /**
     * 模拟
     */
    public String[] divideString(String s, int k, char fill) {
        String[] ans;
        if (s.length() % k == 0) {
            ans = new String[s.length() / k];
        } else {
            ans = new String[(s.length() + k) / k];
            int cnt = k - s.length() % k;
            for (int i = 0; i < cnt; i++) {
                s += fill;
            }
        }
        int ansIdx = 0;
        for (int i = 0; i < s.length(); i += k) {
            ans[ansIdx] = s.substring(i, i + k);
            ansIdx++;
        }
        return ans;
    }

}
